﻿/*
 * Created by SharpDevelop.
 * User: Zoila
 * Date: 29/09/2011
 * Time: 05:22 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;

using PetSoft.GUI.Clinica;

namespace PetSoft.GUI.Configuracion
{
	/// <summary>
	/// Description of GUIMantenimientoTienda.
	/// </summary>
	public partial class GUIMantenimientoTienda : Form
	{
        private List<BETienda> seleccionadas = new List<BETienda>();
        private BETienda tiendaSeleccionada;
        
		public BETienda TiendaSeleccionada {
			get { return tiendaSeleccionada; }
			set { tiendaSeleccionada = value; }
		}

        private List<BETienda> listaTiendas;
        
        /*Atributo de Zoila*/
        public List<BETienda> Seleccionadas
        {
            get { return seleccionadas; }
            set { seleccionadas = value; }
        }

        
        private BLTienda tiendaBL;
		
        
        
        public GUIMantenimientoTienda (int i):this(){
        	if (i==2){
			this.crearBTN.Visible=false;
			this.verBTN.Visible=false;
			this.editBTN.Visible=false;
			//this.elimBTN.Visible=false;
			this.crearBTN.Hide();
			this.verBTN.Hide();
			//this.elimBTN.Hide(); 
			this.editBTN.Hide();
			this.aceptarBTN.Visible=true;
        	}else if(i == 3){
        		//this.crearBTN.Visible=false;
				this.verBTN.Visible=false;
				this.editBTN.Visible=false;
				//this.elimBTN.Visible=false;
				//this.crearBTN.Hide();
				this.verBTN.Hide();
				//this.elimBTN.Hide(); 
				this.editBTN.Hide();
				this.aceptarBTN.Hide();
				this.Aceptar2BTN.Visible = true;
        	}
        	
        }
        
        
        public GUIMantenimientoTienda()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
            this.respuestaLBL.Hide();
            this.tiendaBL = new BLTienda();
            this.idTiendaTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
            this.nombTiendaTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
            this.tiendaDGV.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.tiendaDGV_CellMouseDoubleClick);
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
			this.aceptarBTN.Visible=false;
		}

        
        
        
        
        
        
        
        private void buscarBTN_Click(object sender, EventArgs e)
        {
            this.tiendaDGV.Rows.Clear();
            BETienda tiendaBE = new BETienda();
            if (!this.idTiendaTB.Text.Equals(""))
            {
                tiendaBE.Id = Int32.Parse(this.idTiendaTB.Text);
            }
            else tiendaBE.Id = -1;
            //tiendaBE.IdAdministrador = this.idAdminTB.Text;
            tiendaBE.Nombre = this.nombTiendaTB.Text;
            //tiendaBE.Administrador = this.idAdminTB.Text;
            //if (this.esPrincipalCHB.Checked == true) tiendaBE.EsPrincipal = true;
            List<BETienda> tiendaLST = this.tiendaBL.buscar(tiendaBE);
            this.listaTiendas = tiendaLST;
            /*Lleno el DataGridView*/
            for (int i = 0; i < tiendaLST.Count;++i )
            {
                object[] fila = new object[] { false,tiendaLST[i].Id, tiendaLST[i].Nombre, tiendaLST[i].Direccion };
                this.tiendaDGV.Rows.Add(fila);

            }
            string respuesta;
            if (tiendaLST.Count==0)
            {
                respuesta="Ninguna tienda se ha encontrado.";
            }
            else if(tiendaLST.Count==1)
            {
                respuesta="Se ha encontrado 1 tienda .";
            }
            else
            {
                respuesta="Se han encontrado " + tiendaLST.Count.ToString() + " tiendas.";
            }
            this.respuestaLBL.Text=respuesta;
            this.respuestaLBL.Show();
        }

        private void crearBTN_Click(object sender, EventArgs e)
        {
            GUITienda_Crear tienda_CrearGUI= new GUITienda_Crear(this.tiendaBL);
            tienda_CrearGUI.ShowDialog();
            if (tienda_CrearGUI.SeCreoTienda == true)
            {
                this.limpiarBTN.PerformClick();
                this.buscarBTN.PerformClick();
            }
        }

                
        private void verBTN_Click(object sender, EventArgs e)
        {
            
            int cont = 0;
            BETienda tiendaBE = new BETienda();
            for (int i = 0; i < this.tiendaDGV.Rows.Count; ++i)
            {
                if (Convert.ToBoolean(this.tiendaDGV[0, i].Value) == true)
                {
                    ++cont;
                    tiendaBE.Id = Convert.ToInt32(this.tiendaDGV[1, i].Value);
                }

            }
            if (cont == 1)
            {
                this.tiendaBL.TiendaBE = tiendaBE;
                GUITienda_Ver_Edit tienda_Ver_EditGUI = new GUITienda_Ver_Edit('v', this.tiendaBL);
                tienda_Ver_EditGUI.ShowDialog();
            }
            else if (cont > 1)
            {
                MessageBox.Show("Ha seleccionado más de 1 tienda. Solo debe marcar 1 tienda", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
              
            
            /*GUIActualizarLineaServicio w = new GUIActualizarLineaServicio(new BELineaPedidoServicio());
            w.ShowDialog();*/
        }





        
        
        
        void AceptarBTNClick(object sender, EventArgs e)
        {
            int cont = 0;

            for (int i = 0; i < this.tiendaDGV.Rows.Count; ++i)
            {
                if (Convert.ToBoolean(this.tiendaDGV[0, i].Value) == true)
                {
                    ++cont;
                    BETienda tiendaBE = new BETienda();
                    tiendaBE.Id = Convert.ToInt32(this.tiendaDGV[1, i].Value);
                    tiendaBE.Nombre = this.tiendaDGV[2, i].Value.ToString();
                    this.seleccionadas.Add(tiendaBE);
                }

            }
            this.Close();
        }
   







        private void editBTN_Click(object sender, EventArgs e)
        {
            int cont = 0;
            BETienda tiendaBE = new BETienda();
            for (int i=0;i<this.tiendaDGV.Rows.Count;++i)
            {
                if (Convert.ToBoolean(this.tiendaDGV[0, i].Value) == true)
                {
                    ++cont;
                    tiendaBE.Id = Convert.ToInt32(this.tiendaDGV[1, i].Value);
                }
                
            }

            if (cont == 1)
            {

                this.tiendaBL.TiendaBE = tiendaBE;
                GUITienda_Ver_Edit tienda_Ver_EditGUI = new GUITienda_Ver_Edit('e', this.tiendaBL);
                tienda_Ver_EditGUI.ShowDialog();
                /*Invoco el  evento Click en boton buscar para llenar nuevamente la tabla.*/
                if (tienda_Ver_EditGUI.Modifico == true) this.buscarBTN.PerformClick();
            }
            else if (cont > 1)
            {
                MessageBox.Show("Ha seleccionado más de 1 tienda. Solo debe marcar 1 tienda", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
        
        
        
        
        
        
        
        
        private void buscarAdminBTN_Click(object sender, EventArgs e)
        {
            GUIBuscarEmpleado buscarEmpleadoGUI = new GUIBuscarEmpleado(this.tiendaBL);
            buscarEmpleadoGUI.ShowDialog();
            if (buscarEmpleadoGUI.Acepto == true)
            {
                //this.idAdminTB.Text = buscarEmpleadoGUI.IdEmpleado;
                //this.adminTB.Text = buscarEmpleadoGUI.Empleado;
            }
        }

        
        
        
        
        private void elimBTN_Click(object sender, EventArgs e)
        {
            
        	List<BETienda> tiendaLST = new List<BETienda>();
            string idTienda, mensajeError="";
            BETienda tiendaBE;
            int error=0;
            try {
            if (this.tiendaDGV.Rows.Count > 0)
            {
                for (int i = 0; i < this.tiendaDGV.Rows.Count; ++i)
                {
                    DataGridViewCell celdaEliminar = this.tiendaDGV.Rows[i].Cells["seleccionarCBC"];
                    if (Convert.ToBoolean(celdaEliminar.Value) == true)
                    {
                        /*EL valor de la celda  de la columan Id*/
                        idTienda= this.tiendaDGV.Rows[i].Cells[1].Value.ToString();
                        tiendaBE = new BETienda();
                        tiendaBE.Id = Convert.ToInt32(idTienda);
                        tiendaLST.Add(tiendaBE);
                    }
                }
                if (tiendaLST.Count > 0)
                {
                    if (MessageBox.Show("Esta seguro que quiere eliminar los " + tiendaLST.Count.ToString() + "?", "Pregunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                        == DialogResult.Yes)
                    {
                		foreach (BETienda t in tiendaLST){
                			if (t.Id==BLInfo.TiendaActual.Id){
                				tiendaLST.Remove(t);
                				Utils.MessageAviso("No se puede eliminar "+ t.Nombre +", es la tienda actual");
                			}
                		}
                		if (tiendaLST.Count>0){
	                        this.tiendaBL.eliminar(tiendaLST, ref error, ref mensajeError);
	                        if (error == 0)
	                        {
	                        	Utils.MessageAviso("Transaccion exitosa. " + tiendaLST.Count.ToString() + " eliminados.");
	                            this.buscarBTN.PerformClick();
	                            string respuesta;
	                            if (tiendaLST.Count == 1) respuesta = "Se ha eliminado 1 tienda.";                           
	                            else respuesta = "Se han eliminado " + tiendaLST.Count.ToString() + " tiendas.";
	                            this.respuestaLBL.Text = respuesta;
	                            this.respuestaLBL.Show();
	                        }
	                        else
	                        {
	                        	Utils.MessageAviso(error.ToString() + " - " + mensajeError.ToString());
	                        }
                		}
                    }
                }
                else
                {
                    MessageBox.Show("No existe ninguna tienda seleccionada para eliminar.", "Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
                }
            }
            }
            catch (Exception ex){
            	Utils.MessageAviso(ex.Message);
            }
        }

        private void limpiarBTN_Click(object sender, EventArgs e)
        {
            this.idTiendaTB.Clear();
            this.nombTiendaTB.Clear();
            //this.idAdminTB.Clear();
            //this.adminTB.Clear();
            this.tiendaDGV.Rows.Clear();
            //this.esPrincipalCHB.Checked = false;
            this.respuestaLBL.Hide();
            if(listaTiendas != null) 
        		listaTiendas.Clear();
        }






        void tiendaDGV_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            this.tiendaDGV.Rows[e.RowIndex].Cells["SeleccionarCBC"].Value = !((Boolean)this.tiendaDGV.Rows[e.RowIndex].Cells["SeleccionarCBC"].Value);
        }

        /*Zoila*/
        private void aceptarBTN_Click(object sender, EventArgs e)
        {
        	List<BETienda> tiendaLST = new List<BETienda>();
            string idTienda;
            BETienda tiendaBE;
            if (this.tiendaDGV.Rows.Count > 0)
            {
                for (int i = 0; i < this.tiendaDGV.Rows.Count; ++i)
                {
                    DataGridViewCell celda = this.tiendaDGV.Rows[i].Cells["seleccionarCBC"];
                    if (Convert.ToBoolean(celda.Value) == true)
                    {
                        /*EL valor de la celda  de la columan Id*/
                        idTienda= this.tiendaDGV.Rows[i].Cells[1].Value.ToString();
                        tiendaBE = new BETienda();
                        tiendaBE.Id = Convert.ToInt32(idTienda);
                        tiendaBE.Nombre= this.tiendaDGV.Rows[i].Cells[2].Value.ToString();
                        tiendaLST.Add(tiendaBE);                        
                    }
                }
                
                if (tiendaLST.Count == 0)
                {
                	Utils.MessageAviso("No ha seleccionada ninguna Tienda");
                }
                Seleccionadas=tiendaLST;
            }
            this.Close();
        }


		
		
		
		
		void SelCBCOLCheckedChanged(object sender, EventArgs e)
		{
			for(int i=0; i<this.tiendaDGV.RowCount; i++){
        		this.tiendaDGV[0, i].Value = this.selCBCOL.Checked;
				//list[0, i].Value = ((CheckBox) list.Controls.Find("checkboxHeader", true)[0]).Checked;    		
        	}
		}
		
		void IdTiendaTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.SoloNumerosTB(sender,e);
		}
		
		void NombTiendaTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.SoloLetrasNumerosTB(sender,e);
		}
		
		void IdAdminTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.SoloNumerosTB(sender,e);
		}
		
		void AdminTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.SoloLetrasTB(sender,e);
		}
		
		void Aceptar2BTNClick(object sender, EventArgs e)
		{
			int cont = 0;
			int aux = 0;
			int pos = 0;
			
			foreach (DataGridViewRow fila in tiendaDGV.Rows)
			{
				if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
				{
					cont++;
					pos = aux;
				}
				aux++;
			}
			
			if (cont == 0)
			{
				Utils.MessageAviso("Seleccione un cliente");	
			}
			else if (cont == 1)
			{								
				DataGridViewRow fila = tiendaDGV.Rows[pos];
				if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
				{					
//					if(Utils.esClienteMaster(listaClientes[pos])){
//						Utils.MessageAviso("No puede seleccionar al cliente master en esta búsqueda");
//						return;						
//					}						
//					
					this.tiendaSeleccionada = listaTiendas[pos];
					//MessageBox.Show(clienteSeleccionado.Nombre);
					this.Dispose();
				}
			}
			else if (cont > 1)
			{
				Utils.MessageAviso("Seleccione sólo un cliente");		
			}
		}
		
	}
}
